Skip to content

feat (ProcessBuilder): Implement client side patching for Forge#396

Open
GeekCornerGH wants to merge 9 commits into
dscalzi:masterfrom
Nebula-Electron:feat/rewrite-forge-logic
Open

feat (ProcessBuilder): Implement client side patching for Forge#396
GeekCornerGH wants to merge 9 commits into
dscalzi:masterfrom
Nebula-Electron:feat/rewrite-forge-logic

Conversation

@GeekCornerGH

@GeekCornerGH GeekCornerGH commented May 14, 2026

Copy link
Copy Markdown
Contributor

Implementing on-launcher jar patching for Minecraft Forge

Motivation

Implementing NeoForge was something I wanted to do since a while. However, Forge (in this case versions based on ForgeGradle3) is currently implemented in a hacky way, which also redistributes a modified verison of the Minecraft Jar. While I'm not aware of any Helios user receiving a DMCA takedown notice, I'm however aware that Mojang's AI used for brand protection (Tracer) is known to send mistaken notices. I know this bot scans GitHub, and I also know quite some users are hosting their distribution files on GitHub as well.
I've also noticed NeoForge and Forge are launched in basically the same way, meaning I'll be able to reuse these changes when implementing NeoForge on a later PR.

Oh, and it probably also supersedes dscalzi/Nebula#65

How it works

  1. The user creates the server on Nebula, as usual, by specifying the --forge argument as usual.
  2. The user generates the distribution file. Unlike the older implementation, Nebula unpacks the Forge installer, and extracts the installer metadata, client patch file, and relevant libraries, and add everything to the distribution.json
  3. When the player launches Helios and starts a game, the launcher goes through every "processor" declared on the distribution.json file, and patches the jar. This process happens only once, unless the forge version changes
  4. The game starts as usual

How to test

  1. Clone helios-distribution-types, and build it
  2. Clone helios-core and Nebula, and use npm link to add a location to the modified helios-distribution-types, then build the projects
  3. Generates a server using any ForgeGradle3 version
  4. Clone helioslauncher, use npm link to point to helios-core, and start the launcher
  5. Start the game, and open the console. You'll see the processors output right there
  6. The game starts as usual

Warning ⚠️

The older distribution files won't be compatible with this modified version of helios, and therefore introduces a breaking change

Relevant PRs

Additional notes

Thanks to @sjempotje for testing and refactoring some code

@sjempotje sjempotje force-pushed the feat/rewrite-forge-logic branch from 2180a1a to 9292ed4 Compare May 17, 2026 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants